package org.wu.framework.authorization.platform.application;

import org.wu.framework.web.response.Result;
import org.wu.framework.web.response.ResultFactory;
import org.wu.framework.authorization.platform.domain.model.sys.permission.SysPermission;
import org.wu.framework.authorization.platform.application.command.sys.permission.SysPermissionRemoveCommand;
import org.wu.framework.authorization.platform.application.command.sys.permission.SysPermissionStoryCommand;
import org.wu.framework.authorization.platform.application.command.sys.permission.SysPermissionUpdateCommand;
import org.wu.framework.authorization.platform.application.command.sys.permission.SysPermissionQueryListCommand;
import org.wu.framework.authorization.platform.application.command.sys.permission.SysPermissionQueryOneCommand;
import org.wu.framework.authorization.platform.application.dto.SysPermissionDTO;
import java.util.List;
import org.wu.framework.lazy.orm.database.lambda.domain.LazyPage;
import org.wu.framework.authorization.platform.application.command.sys.permission.SysPermissionExcelExport;
import org.wu.framework.authorization.platform.application.command.sys.permission.SysPermissionExcelImport;
/**
 * describe 系统权限 
 *
 * @author Jia wei Wu
 * @date 2025/08/03 01:55 下午
 * @see org.wu.framework.lazy.orm.core.persistence.reverse.lazy.ddd.DefaultDDDLazyApplication 
 **/

public interface SysPermissionApplication {


    /**
     * describe 新增系统权限
     *
     * @param sysPermissionStoryCommand 新增系统权限     
     * @return {@link Result<SysPermission>} 系统权限新增后领域对象     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    Result<SysPermission> story(SysPermissionStoryCommand sysPermissionStoryCommand);

    /**
     * describe 批量新增系统权限
     *
     * @param sysPermissionStoryCommandList 批量新增系统权限     
     * @return {@link Result<List<SysPermission>>} 系统权限新增后领域对象集合     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    Result<List<SysPermission>> batchStory(List<SysPermissionStoryCommand> sysPermissionStoryCommandList);

    /**
     * describe 更新系统权限
     *
     * @param sysPermissionUpdateCommand 更新系统权限     
     * @return {@link Result<SysPermission>} 系统权限领域对象     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    Result<SysPermission> updateOne(SysPermissionUpdateCommand sysPermissionUpdateCommand);

    /**
     * describe 查询单个系统权限
     *
     * @param sysPermissionQueryOneCommand 查询单个系统权限     
     * @return {@link Result<SysPermissionDTO>} 系统权限DTO对象     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    Result<SysPermissionDTO> findOne(SysPermissionQueryOneCommand sysPermissionQueryOneCommand);

    /**
     * describe 查询多个系统权限
     *
     * @param sysPermissionQueryListCommand 查询多个系统权限     
     * @return {@link Result <List<SysPermissionDTO>>} 系统权限DTO对象     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    Result <List<SysPermissionDTO>> findList(SysPermissionQueryListCommand sysPermissionQueryListCommand);


    /**
     * 扫描系统权限
     * @return
     */
    Result<List<SysPermissionDTO>> findScanPermission();
    /**
     * describe 分页查询多个系统权限
     *
     * @param sysPermissionQueryListCommand 分页查询多个系统权限     
     * @return {@link Result <LazyPage<SysPermissionDTO>>} 分页系统权限DTO对象     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    Result <LazyPage<SysPermissionDTO>> findPage(int size,int current,SysPermissionQueryListCommand sysPermissionQueryListCommand);

    /**
     * describe 删除系统权限
     *
     * @param sysPermissionRemoveCommand 删除系统权限     
     * @return {@link Result<SysPermission>} 系统权限     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    Result<SysPermission> remove(SysPermissionRemoveCommand sysPermissionRemoveCommand);

    /**
     * describe 导出系统权限
     *
     * @param sysPermissionQueryListCommand 导出系统权限     
     * @return {@link List<SysPermissionExcelExport>} 系统权限     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    public List<SysPermissionExcelExport> exportExcel(SysPermissionQueryListCommand sysPermissionQueryListCommand);

    /**
     * describe 导入系统权限
     *
     * @param sysPermissionExcelImportList 导入系统权限     
     * @return {@link Result<List<SysPermissionExcelImport>>} 系统权限     
     
     * @author Jia wei Wu
     * @date 2025/08/03 01:55 下午
     **/

    public Result<List<SysPermissionExcelImport>> importExcel(List<SysPermissionExcelImport> sysPermissionExcelImportList);

}